package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.entity.Weibo;
import cn.tedu._04mybatis.pojo.vo.*;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface WeiboMapper {
    /**
     * 1.微博表中插入1条表记录
     *
     * @param weibo 微博实体类对象
     * @return 受影响的数据条数
     */
    //@Insert("INSERT INTO weibo(content,created,user_id) VALUES (#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);

    /**
     * 2.根据微博ID删除指定的微博
     */
    //@Delete("DELETE FROM weibo WHERE id=#{wid}")
    int deleteWeiboById(Long wid);

    /**
     * 3.根据微博ID更新指定微博的信息
     * id  content  created  user_id
     */
    //@Update("UPDATE weibo SET content=#{content}, created=#{created}, user_id=#{userId} WHERE id=#{id}")
    int updateWeiboById(Weibo weibo);

    /**
     * 4.查询：单条数据全字段查询
     * 根据微博ID查询该条微博的所有信息
     * SELECT id,content,created,user_id FROM weibo WHERE id=200;
     * SELECT * FROM weibo WHERE id>200;
     * SELECT content,created FROM weibo WHERE id=200;
     * SELECT content,created FROM weibo WHERE id>200;
     */
    //注意：如果查询字段名和属性名不一致，则通过别名的方式解决.
    //@Select("SELECT id,content,created,user_id userId FROM weibo WHERE id=#{wid}")
    Weibo selectWeiboById(Long wid);

    /**
     * 5.查询：单条数据部分字段查询
     * 查询指定微博的内容content和发布时间created;
     */
    //@Select("SELECT content, created FROM weibo WHERE id=#{wid}")
    WeiboVO1 selectWeiboVOById(Long wid);

    /**
     * 6.查询：多条数据部分字段查询
     * 查询指定用户发布的微博的ID和内容
     * 6.1 创建VO类;
     * 6.2 定义接口方法和SQL;
     * 6.3 测试.
     */
    //@Select("SELECT id wid, content FROM weibo WHERE user_id=#{userId}")
    List<WeiboVO2> selectWeiboVO2ByUserId(Long userId);

    /**
     * 7.动态删除1:数组方式
     * 根据微博ID,删除指定的微博数据;
     * DELETE FROM weibo WHERE id IN (1,3,5);
     * 操作步骤:
     * 1.定义接口方法;
     * 2.XML文件配置SQL;
     * 3.测试方法;
     */
    int deleteWeiboByIds1(Integer[] ids);

    /**
     * 8.动态删除2:集合方式
     */
    int deleteWeiboByIds2(List<Integer> ids);

    /*
    9.动态修改
    根据微博ID动态修改微博的相关信息
     */
    int dynamicUpdateWeiboById(Weibo weibo);

    /**
     * 10.统计微博表中的表记录的数量
     */
    int selectCount();
    /**
   * 11.ResultMap单表,根据微博ID查询该条微博的ID.内容content.用户ID
   */
    ResultMapVO1 selectMap1(Long wid);

    ResultMapVO2 selectMap2(Long uid);


}
